home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / teddy-1a / rect.bas < prev    next >
Encoding:
BASIC Source File  |  1999-09-17  |  1.8 KB  |  54 lines

  1. Attribute VB_Name = "Module1"
  2. Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  3. Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  4. Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  5. Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  6. Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  7. Declare Function CreateEllipticRgnIndirect Lib "gdi32" (lpRect As rect) As Long
  8.  
  9. Type POINTAPI
  10.         x As Long
  11.         y As Long
  12. End Type
  13.  
  14. Type rect
  15.         Left As Long
  16.         Top As Long
  17.         Right As Long
  18.         Bottom As Long
  19. End Type
  20.  
  21. Const conHwndTopmost = -1
  22. Const conHwndNoTopmost = -2
  23. Const RGN_AND = 1
  24. Const RGN_COPY = 5
  25. Const RGN_DIFF = 4
  26. Const RGN_OR = 2
  27. Const RGN_XOR = 3
  28.  
  29. Dim rect(9999) As rect
  30. Dim Region(9999) As Long
  31. Dim Counter As Integer
  32.  
  33. Public Function Shapes(frm As Form)
  34.     For Each x In frm.Shape1
  35.         
  36.         rect(Counter).Left = x.Left
  37.         rect(Counter).Right = x.Left + x.Width
  38.         rect(Counter).Top = x.Top
  39.         rect(Counter).Bottom = x.Top + x.Height
  40.         
  41.         Region(Counter) = CreateEllipticRgnIndirect(rect(Counter))
  42.         
  43.         If (Counter > 1) Then
  44.             Call CombineRgn(Region(Counter), Region(Counter), Region(Counter - 1), RGN_XOR)
  45.         End If
  46.         
  47.         Counter = Counter + 1
  48.     Next
  49.     
  50.     Call SetWindowRgn(frm.hwnd, Region(Counter - 1), True)
  51.     
  52. End Function
  53.  
  54.